package 代码记录.指定公司代码练习记录.华为_2024.分值100.第36start;

import java.util.*;

/**
 * @author zx
 * @create 2024-02-16 13:13
 * 看懂他的思路了，不难；二刷自己要能做出来
 */
public class 石头剪刀布游戏_48 {
    /**
     * 用一个哈希表记录所有出 A、B、C 的人，其中key 为字符串 A或B或C中的一种，value 为出该种形状的任命所构成的列表。若：
     * ·哈希表中只存在1种键或者3种键均存在，则说明出现平局，输出"NULL"
     * ·哈希表中恰好只存在2种键。若
     *      .只存在字符串 A和 B，则逐行输出键A对应的列表升序排列的结果
     *      .只存在字符串 B 和 C，则逐行输出键B对应的列表升序排列的结果
     *      .只存在字符串 C和 A，则逐行输出键C对应的列表升序排列的结果
     * @param args
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Map<String, List<String>> map = new HashMap<>();
        while (true) {
            String str = sc.nextLine();
            if (str.isEmpty()) {
                break; //当输入为空串时结束循环
            }
            String[] arr = str.split(" ");
            String name = arr[0];
            String k = arr[1];
            if (!map.containsKey(k)) {
                map.put(k, new ArrayList<>());
            }
            map.get(k).add(name);
        }
        if (map.size() != 2) {
            System.out.println("NULL");
        } else {
            List<String> res = new ArrayList<>();
            if (map.containsKey("A") && map.containsKey("B")) {
                res = map.get("A");
            } else if (map.containsKey("B") && map.containsKey("C")) {
                res = map.get("B");
            } else {
                res = map.get("C");
            }
            Collections.sort(res);
            for (String name : res) {
                System.out.println(name);
            }
        }
    }
}
